#endif
/* Mask all upcalls... */
- for ( i = 0; i < MAX_VIRT_CPUS; i++ )
+ for ( i = 1; i < MAX_VIRT_CPUS; i++ )
d->shared_info->vcpu_data[i].evtchn_upcall_mask = 1;
#ifdef CONFIG_VTI
#include <asm/processor.h>
#include <asm/delay.h>
#include <asm/vmx_vcpu.h>
+#include <xen/event.h>
typedef union {
struct ia64_psr ia64_psr;
{
UINT64 *p, *q, *r, bits, bitnum, mask, i, vector;
+ /* Always check pending event, since guest may just ack the
+ * event injection without handle. Later guest may throw out
+ * the event itself.
+ */
+ if (event_pending(vcpu) &&
+ !test_bit(vcpu->vcpu_info->arch.evtchn_vector,
+ &PSCBX(vcpu, insvc[0])))
+ vcpu_pend_interrupt(vcpu, vcpu->vcpu_info->arch.evtchn_vector);
+
p = &PSCBX(vcpu,irr[3]);
/* q = &PSCB(vcpu,delivery_mask[3]); */
r = &PSCBX(vcpu,insvc[3]);